package com.wzdigit.wms.basic.client.request.basic;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * 创建库区输入
 * @author yangdongjie
 * @CreateZoneGroupRequest.java
 * @2021年1月4日上午11:18:30
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler", "fieldHandler"}, ignoreUnknown = true)
public class CreateZoneRequest implements Serializable {

	private static final long serialVersionUID = 3079463204519995238L;

    /**
     * 库区代码
     */
    @ApiModelProperty(value = "库区代码", required = true)
    @NotBlank(message = "库区代码不能为空")
    private String zoneCode;

    /**
     * 库区名称
     */
    @ApiModelProperty(value = "库区名称", required = true)
    @NotBlank(message = "库区名称不能为空")
    private String zoneName;

    /**
     * 区域ID
     */
    @ApiModelProperty(value = "区域ID", required = true)
    @NotNull(message = "区域ID不能为空")
    private Integer zoneGroupId;
    
    /**
     * 拣货过渡库位：
     * 表示该库区的货物执行拣货操作时，将被拣取到所指定库位
	 * 如果此字段有值，订单分配时从对应区拣货记录会直接将这个过渡库位作为拣货目的库。 通常情况下可跳过，不设置
     */
    @ApiModelProperty(value = "拣货过渡库位", required = false)
    @Range(min = 0, max = 1, message = "拣货过渡库位错误")
    private Integer pickToLoc;

    /**
     * 入库过渡库位
     * 表示入库流程中，需要上架到该库区的货物，将首先移动到制定的库位作为上架过渡。通常情况下可跳过，不设置
     */
    @ApiModelProperty(value = "入库过渡库位", required = false)
    @Range(min = 0, max = 1, message = "入库过渡库位错误")
    private Integer putawayToLoc;

    /**
     * 基地库位：
     * 用于设置库区的基地库位，通过基点计算目标库位的拣货距离
     */
    @ApiModelProperty(value = "基地库位", required = false)
    private Integer baseLoc;

    /**
     * 是否支持整箱补货
     */
    @ApiModelProperty(value = "是否支持整箱补货", required = false)
    @Range(min = 0, max = 1, message = "是否支持整箱补货错误")
    private Integer allowEaRpl;

    /**
     * 是否支持拆零补货
     */
    @ApiModelProperty(value = "是否支持拆零补货", required = false)
    @Range(min = 0, max = 1, message = "是否支持拆零补货错误")
    private Integer allowCsRpl;

    /**
     * 状态
     */
    @ApiModelProperty(value = "状态", required = true)
    @NotNull(message = "状态不能为空")
    @Range(min = 0, max = 1, message = "状态错误")
    private Integer status;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注", required = false)
    private String comments;

}